#include <stdlib.h>
#include "psvn_game_so.h"


const compiled_game_so_t psvn_state_space = {
  NUMVARS,
  sizeof( var_t ),

  sizeof( state_t ),

  fwd_rule_names,
  bwd_rule_names,

  init_history,

  MAX_CHILDREN,
  (so_func_ptr)fwdfn0,
  (so_actfunc_ptr *)fwd_rules,
#ifdef HAVE_FWD_PRUNING
  fwd_prune_table,
#else
  NULL,
#endif

#ifdef HAVE_BWD_MOVES
  BW_MAX_CHILDREN,
  (so_func_ptr)bwdfn0,
  (so_actfunc_ptr *)bwd_rules,
#ifdef HAVE_BWD_PRUNING
  bwd_prune_table,
#else
  NULL,
#endif
#else
  0,
  NULL,
  NULL,
  NULL,
#endif

  (int(*)( const void * ))is_goal,
  (void(*)( void *, int * ))init_goal_state,
  (int8_t(*)( void *, int * ))next_goal_state,
  (void(*)( void * ))random_goal_state,

  (ssize_t(*)( FILE *, const void * ))print_state,
  (ssize_t (*)( char *, const size_t, const void * ))sprint_state,
  (ssize_t (*)( const char *, void * ))read_state,

  (uint64_t (*)( const void * ))*hash_state,
  hashlittle2,

  (void *(*)())new_state_map,
  (void (*)( void * ))destroy_state_map,
  (void (*)( void *, const void *, const int ))state_map_add,
  (int *(*)( const void *map, const void * ))state_map_get,
  (void (*)( FILE *, const void * ))write_state_map,
  (void *(*)( FILE * ))read_state_map,

  (void *(*)( char * ))read_abstraction,
  (void (*)( void * ))destroy_abstraction,
  (void (*)( const void *, const void *, void * ))abstract_state
};
